#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Times
{
     // <summary> 
	// ! Main cycle of the International %Money Market (a.k.a. %IMM) months
	// </summary>
    [Guid ("D2340C24-C9A9-4897-BB82-BF0D55C1AD49"),ComVisible(true)]
	public interface IIMM 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 String Code(DateTime immDate);
        
		 DateTime Date(String immCode, Microsoft.FSharp.Core.FSharpOption<DateTime> referenceDate);
        
		 Boolean IsIMMcode(String p_in, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle);
        
		 Boolean IsIMMdate(DateTime d, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle);
        
		 String NextCode(String immCode, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle, Microsoft.FSharp.Core.FSharpOption<DateTime> referenceDate);
        
		 String NextCode(Microsoft.FSharp.Core.FSharpOption<DateTime> d, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle);
        
		 DateTime NextDate(String immCode, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle, Microsoft.FSharp.Core.FSharpOption<DateTime> referenceDate);
        
		 DateTime NextDate(Microsoft.FSharp.Core.FSharpOption<DateTime> d, Microsoft.FSharp.Core.FSharpOption<Boolean> mainCycle);
    }

    // <summary> 
	// ! Main cycle of the International %Money Market (a.k.a. %IMM) months Factory
	// </summary>
   	[ComVisible(true)]
    public interface IIMM_Factory // : Collection_Factory<IIMM, ICell<IIMM>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

